using System;

using Pegasus.Diagnostics;

namespace Pegasus.Workflow.Service
{
	/// <summary>
	/// Exception when a specific workflow type or id can not be found in the data store.
	/// </summary>
	[Serializable]
	public class WorkflowNotFoundException : WorkflowException
	{
		/// <summary>
		/// Initializes a new instance of the <see cref="T:WorkflowNotFoundException"/> class.
		/// </summary>
		/// <param name="workflowId">The workflow id.</param>
		public WorkflowNotFoundException( int workflowId ) :
			base( string.Format( "Workflow {0} was not found.", workflowId ) )
		{
			// Check Parameters
			ParamCode.AssertRange( workflowId, 1, int.MaxValue, "workflowId" );
		}

		/// <summary>
		/// Initializes a new instance of the <see cref="T:WorkflowNotFoundException"/> class.
		/// </summary>
		/// <param name="workflowId">The workflow id.</param>
		/// <param name="innerException">The inner exception.</param>
		public WorkflowNotFoundException( int workflowId, Exception innerException ) :
			base( innerException, "Workflow {0} was not found.", workflowId )
		{
			// Check Parameters
			ParamCode.AssertRange( workflowId, 1, int.MaxValue, "workflowId" );
			ParamCode.AssertNotNull( innerException, "innerException" );
		}
	}
}
